using System.Collections.Generic;

namespace PluginFrame
{
	public interface IPluginService
	{
		IApplication Application { get; set; }

		void AddPluginNode(string pluginName, string pluginType, string Assembly, string pluginDescription);

		void AddPlugin(string pluginName, IPlugin plugin);

		void RemovePluginNode(string pluginName);

		void RemovePlugin(string pluginName);

		string[] GetAllPluginNames();

		bool Contains(string pluginName);

		IPlugin LoadPlugin(string pluginFileName, string experimentName);

		bool UnLoadPlugin(string pluginName);

		IPlugin GetPluginInstance(string pluginName);

		Dictionary<string, IPlugin>.Enumerator GetPluginEnumerator();

		void LoadAllPlugin();

		void UnLoadAllPlugin();
	}
}
